package models

import (
	"gorm.io/gorm"
)

// Order 订单主表
type Order struct {
	ID            uint64         `gorm:"primaryKey;autoIncrement;comment:订单主键" json:"id"`
	OrderNo       string         `gorm:"type:varchar(32);not null;uniqueIndex;comment:订单编号（业务唯一）" json:"order_no"`
	UserID        int            `gorm:"type:bigint;not null;index:idx_user_id;comment:用户ID" json:"user_id"`
	TotalAmount   float64        `gorm:"type:decimal(10,2);not null;comment:订单总金额（元）" json:"total_amount"` // 建议存“分”
	Status        uint8          `gorm:"type:tinyint;not null;default:1;index:idx_status;comment:订单状态：1待支付 2已支付 3已发货 4已确认收货 5已退款" json:"status"`
	TransactionID string         `gorm:"type:varchar(255);comment:微信支付订单标识" json:"user_id"`
	PayStatus     int8           `gorm:"type:tinyint;default:0;comment:付款状态 1支付完成 0未支付" json:"pay_status"`
	PayTime       JsonTime       `gorm:"type:timestamp;comment:付款时间" json:"pay_time"`
	OutRefundNo   string         `gorm:"type:varchar(255);comment:退款订单号" json:"out_refund_no"`
	RefundStatus  int8           `gorm:"type:int;default:0;comment:退款状态 0未退款 1退款" json:"refund_status"`
	CreatedAt     JsonTime       `gorm:"column:created_at" json:"created_at" ` // 时间格式处理
	UpdatedAt     JsonTime       `gorm:"type:timestamp;comment:更新时间" json:"updated_at"`
	DeletedAt     gorm.DeletedAt `gorm:"type:DATETIME;precision:0;index;comment:删除时间" json:"-"`

	// 关联关系（按需预加载）
	User       User        `gorm:"foreignKey:UserID;references:ID"  json:"user"`
	OrderItems []OrderItem `gorm:"foreignKey:OrderID;references:ID" json:"order_items"`
}

// TableName 设置表名
func (Order) TableName() string {
	return "orders"
}

type OrderQuery struct {
	Mobile string `form:"mobile"`
}
